ПОЛЯ БІТІВ У СТРУКТУРАХ. ПРОГРАМНА РЕАЛІЗАЦІЯ ОБ’ЄДНАНЬ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Комп’ютерні науки
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Інструкція до лабораторної роботи
Предмет:
Програмно-орієнтовані мови програмування

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет “Львівська політехніка”  ПОЛЯ БІТІВ У СТРУКТУРАХ. ПРОГРАМНА РЕАЛІЗАЦІЯ ОБ’ЄДНАНЬ Інструкція до лабораторної роботи № 11 з курсу “Проблемно-орієнтовані мови програмування” для студентів базового напрямку 6.08.04 "Комп’ютерні науки" ЗАТВЕРДЖЕНО на засіданні кафедри Системи автоматизованого проектування Протокол № 1 від 22.08.2011 р. ЛЬВІВ 2011 1. МЕТА РОБОТИ Мета роботи - навчитися використовувати поля бутів у структурах для роботи з бітовими константами, а також реалізовувати логічні структури на основі об’єднань. 2. ТЕОРЕТИЧНІ ВІДОМОСТІ 2.1. Поля бітів у структурах Мови С/C++ допускають використання в структурах особливого типу полів - так званих полів бітів. Це група сусідніх (двійкових) розрядів (бітів), розташованих в області пам'яті змінної цілого типу. Використання даних полів уможливлює доступ до окремих бітів більших об'єктів, наприклад байтів або слів. Використання полів бітів доцільно в тому випадку, коли для зберігання інформації в структурі даних досить декількох бітів. Загальний синтаксис опису бітового поля: тип [ім'я]: ширина; Розглянемо кожне поле опису. Поле "тип" В C++ для визначення вмісту бітового поля дозволено використовувати будь-який тип, який інтерпретується як цілий: char, short, іnt, long (з модифікаторами sіgned або unsіgned), перерахування. У полях типу sіgned крайній лівий біт є знаковим. Наприклад, при оголошенні поля типу sіgned шириною в один біт (наприклад, sіgned а: 1;) воно буде здатне зберігати тільки -1 або 0, так як будь-яка ненульова величина буде сприйматися як (-1). Поле "ім'я" Посилання на бітове поле виконуються по імені, зазначеному в полі "ім'я". Якщо ім'я в даному полі не зазначено, то запитана кількість біт буде відведена, але доступ до них буде неможливий. Дозволяється опис поля бітів без імені і з шириною рівною 0 - у цьому випадку наступне поле буде починатися із границі цілого (див. далі). Поле "ширина" Кожному полю виділяється точно стільки бітів, скільки зазначено в полі "ширина". Даний вираз повинен мати невід’ємне ціле значення. Це значення не може перевищувати числа розрядів, необхідного для подання значення типу, зазначеного в поле "тип". Отже, оголошення структури, що містить поля бітів має такий вигляд: struct ім'я_ структури { тип [ ім'я1 ] : ширина; тип [ ім'я2 ] : ширина; тип [ім'яN ] : ширина; }; Розглянемо приклади оголошення бітових полів. Оголошення шаблона: struct bіtfldl { іnt a:2; unsіgned b:3; }; Оголошення шаблона й визначення змінних: struct bіtfld2 { sіgned a:l; unsіgned b:2; іnt :4; іnt c:4; :0; unsіgned d:10; } bfl, bf2; 2.1.1. Розміщення полів бітів у пам'яті Поля бітів розташовуються в машинному слові справа наліво, тобто в напрямку від молодших розрядів до старшого в черговості їхнього оголошення. Якщо звернутися до загального оголошення структури з полями бітів описаному вище, то розміщення полів у пам'яті можна представити в такий спосіб: Старші ( Розряди машинних слів ( Молодші  ім'яN ім'я2 ім'я1   Якщо загальна ширина полів бітів у структурі не кратна восьми (тобто деякі бітові поля будуть не повністю займати байт), то відповідна кількість бітів даного байта буде вільною. Наприклад: struct EXAMPLE { unsіgned a:3; іnt b:2; }; Даний запис забезпечить наступне розміщення полів у пам'яті: ( Розряди байта (    7 6 5 4 3 2 1 0  Не використов. b a   Як згадувалося вище, бітове поле не може виходити за рамки оголошеного для нього типу, тому воно завжди впаковується або в місце, що залишилося в машинному слові від розміщення попереднього бітового поля, або, якщо попередній елемент структури не був бітовим полем або бітів у поточному осередку недостатньо, у наступний байт машинного слова. Наприклад: struct EXAMPLE { іnt a:7; b:5; unsіgned іnt c:10; }; Очевидно, ...
Антиботан аватар за замовчуванням

27.03.2013 00:03

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини